
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Jose Luis Orta
 */
public class GestorConjPares {
    /** Constructora por defecto */
    public GestorConjPares(){

    }
    /**
     * Carga un conjunto desde la ruta indicada
     * @param ruta Es la ruta absoluta del fichero
     * @return String[][] - Es una matriz con N filas y 3 columnas
     * @throws IOException
     * @throws FileNotFoundException
     */
    public String[][] cargarConjPares(String ruta) throws FileNotFoundException, IOException, FormatoConjParesNoValido {
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(ruta)));
        ArrayList<String[] > result = new ArrayList<String[] >();
        while (br.ready()){
            String[] campos;

            String linea = br.readLine();
            campos = linea.split("\t");
            if (!check(campos)) throw new FormatoConjParesNoValido();
            //anadir (campos, result);
            result.add(campos);
        }
        br.close();
        String[][] r = new String[result.size()][2];
        r = result.toArray(r);
        return r;
    }
    /*private void anadir (String[] campos, ArrayList<String[]> result) {
        boolean encontrado = false;
        for (int i = 0; i < result.size(); ++i) {
            String [] aux = result.get(i);
            if (aux[0].equals(campos[0]) && aux[1].equals(campos[1])) {
                encontrado = true;
                aux[2] = aux[2] + campos[2];
                result.remove(i);
                result.add(aux);
            }

        }
        if (!encontrado) result.add(campos);
    }*/

    /**
     * Salva un conjunto a la ruta indicada
     * @param pares en un vector con N filas y 3 columnas
     * @param ruta Es la ruta absoluta del fichero
     * @return String[][] - Es una matriz con N filas y 2 columnas. La primera columna de la primera fila corresponde al nombre
     * @throws IOException
     * @throws FileNotFoundException
     */
    public void salvarConjPares(String[][] pares, String ruta) throws FileNotFoundException, IOException{
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(ruta)));
        for (int i=0; i<pares.length; i++){
            bw.write(pares[i][1] + "\t" + pares[i][0] + "\t" + pares[i][2]);
            bw.newLine();
        }
        bw.close();
    }
    private boolean check(String[] campos){
        if (campos.length!=3) return false;
        try {
            Integer.parseInt(campos[2]);
        } catch (Exception ex){
            return false;
        }
        return true;
    }
}
